package com.yidu.ladder.util;

import java.text.SimpleDateFormat;
import java.util.concurrent.atomic.AtomicInteger;

public class WorkOrderNewNo {
	//静态变量存储最大值
    private static final AtomicInteger atomicNum = new AtomicInteger();
    //初始化分组编号
    private final int INIT_GROUP_NUM = 0;
    // 时间格式
    private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
    // 获得当前时间
    private static String date = dateFormat.format(System.currentTimeMillis());
     
    // 传入数据库中的单号数
    public void initMaxNum(int size){
    	try{
            int maxGroupNum = size;
            if(maxGroupNum<INIT_GROUP_NUM){
                maxGroupNum = INIT_GROUP_NUM;
            }
            atomicNum.set(maxGroupNum);
        }catch(Exception e){
        	System.out.println("初始化获取分组编号最大值异常");
        }
    }
    
    /**
     * 生成新单号
     * @param noName 单号前面的名字
     * @return 单号
     */
    public static String newNo(String noName,int size) {
    	new WorkOrderNewNo().initMaxNum(size);
		String[] headArray = PinYin4jUtils.getHeadByString(noName);
		String noHead = "";
		for(String name:headArray) {
			noHead += name;
		}
		String nowDate = dateFormat.format(System.currentTimeMillis());
		if(!date.equals(nowDate)) {
    		date = nowDate;
    		atomicNum.set(0);
    	}
		
    	//线程安全的原子操作，所以此方法无需同步
        int newNum = atomicNum.incrementAndGet();
        //数字长度为4位，长度不够数字前面补0
        String newStrNum = String.format("%04d", newNum);
        String dateAndOrder = date+"-"+newStrNum;
		// 加上当前时间
		noHead+="-"+dateAndOrder;
		return noHead;
	}
    /**
     * 封签号
     * @return
     */
	public static String getSealNo() {
		  // 时间格式
		SimpleDateFormat dateFormats = new SimpleDateFormat("yyMMddhhmmss");
		    // 获得当前时间
		String dates = dateFormats.format(System.currentTimeMillis());
		return "FQ"+"-"+dates;
	}

  
}
